// 版权所有2011 Go作者。保留所有权利。
// 此源代码的使用受BSD样式
// 许可证的约束，该许可证可以在许可证文件中找到。

// 包错误实现了处理错误的函数。
// 
// 新函数创建的错误的唯一内容是文本消息。
// 
// 展开、Is和As函数处理可能会包装其他错误的错误。
// 如果一个错误的类型具有方法
// 
// Unwrap（）错误
// 
// 如果e.Unwrap（）返回非零错误w，那么我们说e WRAP w.
// 
// Unwrap S Unwrap S WRAPED errors。如果其参数的类型具有
// Unwrap方法，则会调用该方法一次。否则，它返回nil。
// 
// 创建包装错误的简单方法是调用fmt。Errorf并将%w动词
// 应用于error参数：
// 
// errors。展开（fmt.Errorf（“…%w…”。。。，呃，…）
// 
// 返回错误。
// 
// Is按顺序展开其第一个参数，以查找与第二个参数匹配的错误。它会报告是否找到匹配项。它应该优先于
// 简单的相等性检查：
// 
// 如果出现错误。Is（err，fs.ErrExist）
// 
// 比
// 
// 更可取，如果err==fs。ErrExist 
// 
// 因为如果出错，前者将成功。错误存在。
// 
// As按顺序展开其第一个参数，查找可分配给其第二个参数的错误，该参数必须是指针。如果成功，则执行赋值并返回true。否则，返回false。表
// 
// var perr*fs。路径错误
// if错误。As（err，&perr）{
// fmt.Println（perr.Path）
// }
// 
// 比
// 
// 如果perr，ok:=err。（*fs.PathError）；好的{
// fmt.Println（perr.Path）
// }
// 
// 因为如果错误包装为*fs，前者将成功。路径错误。
package errors

// New返回一个错误，格式为给定文本。
// 每次调用New都会返回一个不同的错误值，即使文本相同。
func New(text string) error {
	return &errorString{text}
}

// errorString是一个简单的错误实现。
type errorString struct {
	s string
}

func (e *errorString) Error() string {
	return e.s
}
